void putchar_serial(unsigned char c)
{
+ #ifdef CONFIG_OUTPUT_SERIAL
if ( c == '\n' ) putchar_serial('\r');
- if ( (c != '\n') && (c != '\r') && ((c < 32) || (c > 126)) ) return;
while ( !(inb(SERIAL_BASE+LINE_STATUS)&(1<<5)) ) barrier();
outb(c, SERIAL_BASE+TX_HOLD);
+ #endif
}
/* Put the character C on the screen. */
static void putchar (int c)
{
+ #ifdef CONFIG_OUTPUT_CONSOLE
static char zeroarr[2*COLUMNS] = { 0 };
-
+ if ( (c != '\n') && ((c < 32) || (c > 126)) ) return;
+ #endif
putchar_serial(c);
- if ( c == '\n' )
- {
- newline:
- xpos = 0;
- ypos++;
- if (ypos >= LINES)
- {
- ypos = LINES-1;
- memcpy((char*)video,
- (char*)video + 2*COLUMNS, (LINES-1)*2*COLUMNS);
- memcpy((char*)video + (LINES-1)*2*COLUMNS,
- zeroarr, 2*COLUMNS);
- }
- return;
- }
-
- *(video + (xpos + ypos * COLUMNS) * 2) = c & 0xFF;
- *(video + (xpos + ypos * COLUMNS) * 2 + 1) = ATTRIBUTE;
-
- xpos++;
- if (xpos >= COLUMNS)
+ #ifdef CONFIG_OUTPUT_CONSOLE
+ if(opt_console) {
- if (c == '\n' || c == '\r')
++ if (c == '\n')
+ {
+ newline:
+ xpos = 0;
+ ypos++;
+ if (ypos >= LINES)
+ {
+ ypos = LINES-1;
+ memcpy((char*)video,
+ (char*)video + 2*COLUMNS, (LINES-1)*2*COLUMNS);
+ memcpy((char*)video + (LINES-1)*2*COLUMNS,
+ zeroarr, 2*COLUMNS);
+ }
+ return;
+ }
+
+ *(video + (xpos + ypos * COLUMNS) * 2) = c & 0xFF;
+ *(video + (xpos + ypos * COLUMNS) * 2 + 1) = ATTRIBUTE;
+
+ xpos++;
+ if (xpos >= COLUMNS)
goto newline;
+ }
+ #endif
}
static inline void __putstr(const char *str)